/**
 * 
 */
package com.wilmar.process.core.services.spi;

import java.util.Set;

import com.wilmar.process.entity.Organization;
import com.wilmar.process.entity.User;

/**
 * 工作流子系统机构服务接口，所有服务都需要指定外部系统名称
 * 
 * @author MaKuBEX E-mail:makubexnet@gmail.com
 * @version 1.0.0 at Jul 29, 2009 5:24:31 PM
 * 
 */
public interface IOrganizationService {
	/**
	 * 根据用户获取用户所在的所有机构集合
	 * 
	 * @param user
	 *            用户实体
	 * @return 机构集合
	 */
	public Set<Organization> getListAllOrganizationsByUser(User user);

	/**
	 * 获取当前机构的所有子机构信息
	 * 
	 * @param organization
	 *            当前机构实体
	 * @return 所有子机构集合
	 */
	public Set<Organization> getListAllSubOrganizations(
			Organization organization);

	/**
	 * 根据机构代码获取机构实体信息
	 * 
	 * @param orgCode
	 *            机构代码
	 * @param outerSystem
	 *            外部系统名称
	 * @return 机构实体
	 */
	public Organization getOrganizationByCode(String orgCode, String outerSystem);

	/**
	 * 获取当前机构的父机构
	 * 
	 * @param organization
	 *            当前机构实体
	 * @return 父机构实体
	 */
	public Organization getParentOrganizationByOrganization(
			Organization organization);

}
